#include <iostream>

using namespace std;

// 【题目280】设计一个Sample类，其数据和方法均包含在该类中，而且使用类模板的方式实现插入排序、冒泡排序、快速排序。

template <class T>
class Sample
{
private:
    T *p;
    int len;

public:
    Sample(int n)
    {
        len = n;
        p = new T[n];
    }

    void sort()
    {
        // 插入排序
        for (int i = 1; i < len; i++)
        {
            T temp = p[i];
            int j = i - 1;
            while (j >= 0 && p[j] > temp)
            {
                p[j + 1] = p[j];
                j--;
            }
            p[j + 1] = temp;
        }
    }
    void print()
    {

        for (int i = 0; i < len; i++)
        {
            cout << p[i] << " ";
        }
        cout << endl;
    }

    T &operator[](int i)
    {
        return p[i];
    }
};

int main()
{
    Sample<int> s(5);
    s[0] = 3;
    s[1] = 1;
    s[2] = 4;
    s[3] = 2;
    s[4] = 5;
    s.print();
    s.sort();
    s.print();
}